const express = require('express');
const cors = require('cors');
const config = require('./config');

const app = express();

// 中间件配置
app.use(cors()); // 允许跨域
app.use(express.json()); // 解析JSON请求体
app.use(express.urlencoded({ extended: true })); // 解析URL编码请求体

// 请求日志中间件
app.use((req, res, next) => {
  console.log(`[${new Date().toISOString()}] ${req.method} ${req.url}`);
  next();
});

// 路由配置
app.use('/api/auth', require('./routes/auth'));

// 测试受保护的路由
app.get('/api/protected', require('./middleware/auth'), (req, res) => {
  res.json({
    code: 200,
    message: '这是受保护的数据',
    data: {
      message: `你好，${req.user.username}！这是需要登录才能访问的内容。`,
      timestamp: new Date().toISOString()
    }
  });
});

// 健康检查接口
app.get('/api/health', (req, res) => {
  res.json({
    code: 200,
    message: '服务运行正常',
    data: {
      appName: config.unifiedLogin.appName,
      appId: config.unifiedLogin.appId,
      timestamp: new Date().toISOString()
    }
  });
});

// 404处理
app.use((req, res) => {
  res.status(404).json({
    code: 404,
    message: '接口不存在'
  });
});

// 错误处理
app.use((err, req, res, next) => {
  console.error('[Error]', err);
  res.status(500).json({
    code: 500,
    message: '服务器内部错误',
    error: err.message
  });
});

// 启动服务器
app.listen(config.port, () => {
  console.log('==========================================');
  console.log('  统一登录后端服务已启动');
  console.log('==========================================');
  console.log(`  服务地址: http://localhost:${config.port}`);
  console.log(`  应用名称: ${config.unifiedLogin.appName}`);
  console.log(`  应用ID: ${config.unifiedLogin.appId}`);
  console.log('==========================================');
});

module.exports = app;

